data_list_Im_a <- list(df_p1a, df_p2a, df_p3a)
data_list_4MEI_a <- list(df_p4a, df_p5a, df_p6a)
data_list_Im_a <- lapply(data_list_Im_a, rename_col1)
data_list_4MEI_a <- lapply(data_list_4MEI_a, rename_col1)
#MERGE NAMES_DF WITH MAIN DATAFRAME
df1_list_Im_a <- Map(merge_names, names_list_Im, data_list_Im_a, MoreArgs = list(suffix = "Im"), num = seq_along(names_list_Im))
names(df1_list_Im_a) <- str_c("df1_p", seq_along(df1_list_Im_a))
df1_list_4MEI_a <- Map(merge_names, names_list_4MEI, data_list_4MEI_a, MoreArgs = list(suffix = "4MEI"), num = seq_along(names_list_4MEI)+3)
names(df1_list_4MEI_a) <- str_c("df1_p", seq_along(df1_list_4MEI_a)+3)
#MERGE DATAFRAMES IN THE LISTS
df1_Im_a <- bind_rows(df1_list_Im_a)
df1_4MEI_a <- bind_rows(df1_list_4MEI_a)
#SUBSET THE DATA
df2_Im_a  <- cbind(df1_Im_a [1:5],
df1_Im_a ["494"],
df1_Im_a ["655"])
names(df2_Im_a)[6:7] <- c("AbsEx", "AbsEm")
df2_4MEI_a  <- cbind(df1_4MEI_a [1:5],
df1_4MEI_a ["506"],
df1_4MEI_a ["655"])
names(df2_4MEI_a)[6:7] <- c("AbsEx", "AbsEm")
#CALCULATE THE AVERAGE ABSORBANCE OF THE EXCITATION AND EMISSION WAVELENGTHS
df2_Im_a$Mean_ExEmAb <- (df2_Im_a$AbsEx + df2_Im_a$AbsEm)/2
df2_4MEI_a$Mean_ExEmAb <- (df2_4MEI_a$AbsEx + df2_4MEI_a$AbsEm)/2
####
#PERFORM IFE CORRECTION
#SUBSET THE FLUORESCENCE DATA (UNAVERAGED) TO PEAK
df2_Im_peak <- df2_Im %>%
filter(Wavelength == 655)
df2_4MEI_peak <- df2_4MEI %>%
filter(Wavelength == 655)
#MERGE WITH ABSORBANCE DATA
df7_Im <- merge(df2_Im_peak, df2_Im_a, by = c("Plate", "Well_ID", "SampleName", "Conc", "TechRep"))
df7_4MEI <- merge(df2_4MEI_peak, df2_4MEI_a, by = c("Plate", "Well_ID", "SampleName", "Conc", "TechRep"))
#CALCULATE IFE CORRECTED FLUORESCENCE
df7_Im$FCorr <- df7_Im$value*10^(df7_Im$Mean_ExEmAb)
df7_4MEI$FCorr <- df7_4MEI$value*10^(df7_4MEI$Mean_ExEmAb)
#EXTRACT 0uM CONTROLS AND COMPUTE THE AVERAGE OF TECHREPS
df_Blank_Im_FC <- df7_Im %>%
filter(Conc == 0 & SampleName == "Im") %>%
group_by(Plate) %>%
summarize_at(vars(FCorr), list(BC_MeanAbs2 = mean, BC_SdAbs2 = sd))
df_Blank_4MEI_FC <- df7_4MEI %>%
filter(Conc == 0 & SampleName == "4MEI") %>%
group_by(Plate) %>%
summarize_at(vars(FCorr), list(BC_MeanAbs2 = mean, BC_SdAbs2 = sd))
#CALCULATE THE 0uM (REAGENT BLANK) CORRECTED ABSORBANCE VALUES
df8_Im <- inner_join(df7_Im, df_Blank_Im_FC, by=c("Plate")) %>%
mutate(NC_value = FCorr - BC_MeanAbs2) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, FCorr, NC_value)
df8_4MEI <- inner_join(df7_4MEI, df_Blank_4MEI_FC, by=c("Plate")) %>%
mutate(NC_value = FCorr - BC_MeanAbs2) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, FCorr, NC_value)
#COMPUTE THE AVERAGE OF TECHREPS
df9_Im <- df8_Im %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
df9_4MEI <- df8_4MEI %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
#COMPUTE THE AVERAGE OF EXPERIMENTAL REPEATS
df10_Im <- df9_Im %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd)) %>%
filter(SampleName == "Im")
df10_Im$Wavelength <- as.numeric(as.character(df10_Im$Wavelength))
df10_4MEI <- df9_4MEI %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd)) %>%
filter(SampleName == "4MEI")
df10_4MEI$Wavelength <- as.numeric(as.character(df10_4MEI$Wavelength))
#PERFORM LINEAR REGRESSION ON CALIBRATION STANDARDS
lm_Im <- lm(MeanAbs2~Conc, data = df10_Im)
summary(lm_Im)
Im_r2 <- summary(lm_Im)$r.squared
lm_4MEI <- lm(MeanAbs2~Conc, data = df10_4MEI)
summary(lm_4MEI)
MEI_r2 <- summary(lm_4MEI)$r.squared
summary(lm_Im)
lod_Im <- 96.770*3.3/lm_Im$coefficients[1]
loq_Im <- 96.770*10/lm_Im$coefficients[1]
lod_Im <- 96.770*3.3/lm_Im$coefficients[2]
loq_Im <- 96.770*10/lm_Im$coefficients[2]
summary(lm_4MEI)
lod_Im <- 96.770*3.3/lm_Im$coefficients[2]
loq_Im <- 96.770*10/lm_Im$coefficients[2]
lm_4MEI <- lm(MeanAbs2~Conc, data = df10_4MEI)
summary(lm_4MEI)
MEI_r2 <- summary(lm_4MEI)$r.squared
lod_4MEI <- 46.4185*3.3/lm_4MEI$coefficients[2]
loq_4MEI <- 46.4185*10/lm_4MEI$coefficients[2]
summary(lm_Im)
#Load libraries
setwd(dirname(rstudioapi::getSourceEditorContext()$path)) #path is where this code is saved - data must be in the same folder
library(readxl)
library(dplyr)
library(stringr)
library(reshape)
library(ggplot2)
library(RColorBrewer)
#library(scales)
#OPEN IMIDAZOLE FILES
df_p1 <- read_excel('Exp 20250603 - Quantitation of Imidazole with AMTA.xlsx','Plate 1 Transposed')
df_p2 <- read_excel('Exp 20250604 - Quantitation of Imidazole with AMTA Pt2.xlsx','Plate 1 Transposed')
df_p3 <- read_excel('Exp 20250616 - Quantitation of Imidazole with AMTA (Pt1 Repeat).xlsx','Plate 1 Transposed')
name_df_p1 <- read_excel('Exp 20250603 - Quantitation of Imidazole with AMTA.xlsx','Sample Names')
name_df_p2 <- read_excel('Exp 20250604 - Quantitation of Imidazole with AMTA Pt2.xlsx','Sample Names')
name_df_p3 <- read_excel('Exp 20250616 - Quantitation of Imidazole with AMTA (Pt1 Repeat).xlsx','Sample Names')
#OPEN 4-METHYLIMIDAZOLE FILES
df_p4 <- read_excel('Exp 20250820a - Quantitation of 4MEI with AMTA.xlsx','Plate 1 Transposed')
df_p5 <- read_excel('Exp 20250823 - Quantitation of 4MEI with AMTA and Selectivity.xlsx','Plate 1 Transposed')
df_p6 <- read_excel('Exp 20250824 - Quantitation of 4MEI with AMTA and Food Samples.xlsx','Plate 1 Transposed')
name_df_p4 <- read_excel('Exp 20250820a - Quantitation of 4MEI with AMTA.xlsx','Sample Names')
name_df_p5 <- read_excel('Exp 20250823 - Quantitation of 4MEI with AMTA and Selectivity.xlsx','Sample Names')
name_df_p6 <- read_excel('Exp 20250824 - Quantitation of 4MEI with AMTA and Food Samples.xlsx','Sample Names')
#RENAME FIRST COLUMN
data_list_Im <- list(df_p1, df_p2, df_p3)
data_list_4MEI <- list(df_p4, df_p5, df_p6)
rename_col1 <- function(df) {
names(df)[1]<-"Well_ID"
return(df)
}
data_list_Im <- lapply(data_list_Im, rename_col1)
data_list_4MEI <- lapply(data_list_4MEI, rename_col1)
#MERGE NAMES_DF WITH MAIN DATAFRAME
names_list_Im <- list(name_df_p1, name_df_p2, name_df_p3)
names_list_4MEI <- list(name_df_p4, name_df_p5, name_df_p6)
merge_names <- function(dfName, dfData, suffix, num){
dfNew <- cbind(dfName, dfData[!names(dfData) %in% names(dfName)])
dfNew <- cbind(Plate = num, dfNew)
return(dfNew)
}
df1_list_Im <- Map(merge_names, names_list_Im, data_list_Im, MoreArgs = list(suffix = "Im"), num = seq_along(names_list_Im))
names(df1_list_Im) <- str_c("df1_p", seq_along(df1_list_Im))
df1_list_4MEI <- Map(merge_names, names_list_4MEI, data_list_4MEI, MoreArgs = list(suffix = "4MEI"), num = seq_along(names_list_4MEI)+3)
names(df1_list_4MEI) <- str_c("df1_p", seq_along(df1_list_4MEI)+3)
#MERGE DATAFRAMES IN THE LISTS
df1_Im <- bind_rows(df1_list_Im)
df1_4MEI <- bind_rows(df1_list_4MEI)
#WHERE THE INDIVIDUAL SPECTRA ARE IN COLUMNS, STACK THE DATA
df2_Im <- melt(df1_Im, id=c("Well_ID", "SampleName", "Conc", "TechRep", "Plate"))
names(df2_Im)[names(df2_Im) == "variable"] <- "Wavelength"
df2_4MEI <- melt(df1_4MEI, id=c("Well_ID", "SampleName", "Conc", "TechRep", "Plate"))
names(df2_4MEI)[names(df2_4MEI) == "variable"] <- "Wavelength"
#EXTRACT WATER CONTROLS AND COMPUTE THE AVERAGE OF TECHREPS
df_waterControls_Im <- df2_Im %>%
filter(SampleName == "Water Control") %>%
group_by(Plate, Wavelength) %>%
summarize_at(vars(value), list(MeanAbs = mean, SdAbs = sd))
df_waterControls_4MEI <- df2_4MEI %>%
filter(SampleName == "Water Control") %>%
group_by(Plate, Wavelength) %>%
summarize_at(vars(value), list(MeanAbs = mean, SdAbs = sd))
#CALCULATE THE WATER (BLANK) CORRECTED ABSORBANCE VALUES
df3_Im <- inner_join(df2_Im, df_waterControls_Im, by=c("Plate", "Wavelength")) %>%
mutate(BC_value = value - MeanAbs) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, BC_value) %>%
filter(SampleName == "Im")
df3_4MEI <- inner_join(df2_4MEI, df_waterControls_4MEI, by=c("Plate", "Wavelength")) %>%
mutate(BC_value = value - MeanAbs) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, BC_value) %>%
filter(SampleName == "4MEI")
#COMPUTE THE AVERAGE OF TECHREPS
df4_Im <- df3_Im %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(BC_value), list(MeanAbs = mean, SdAbs = sd))
df4_Im$Wavelength <- as.numeric(as.character(df4_Im$Wavelength))
df4_4MEI <- df3_4MEI %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(BC_value), list(MeanAbs = mean, SdAbs = sd))
df4_4MEI$Wavelength <- as.numeric(as.character(df4_4MEI$Wavelength))
#EXTRACT 0uM CONTROLS AND COMPUTE THE AVERAGE OF TECHREPS
df_Blank_Im <- df3_Im %>%
filter(Conc == 0) %>%
group_by(Plate, Wavelength) %>%
summarize_at(vars(BC_value), list(BC_MeanAbs = mean, BC_SdAbs = sd))
df_Blank_4MEI <- df3_4MEI %>%
filter(Conc == 0) %>%
group_by(Plate, Wavelength) %>%
summarize_at(vars(BC_value), list(BC_MeanAbs = mean, BC_SdAbs = sd))
#CALCULATE THE 0uM (REAGENT BLANK) CORRECTED ABSORBANCE VALUES
df5_Im <- inner_join(df3_Im, df_Blank_Im, by=c("Plate", "Wavelength")) %>%
mutate(NC_value = BC_value - BC_MeanAbs) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, BC_value, NC_value)
df5_4MEI <- inner_join(df3_4MEI, df_Blank_4MEI, by=c("Plate", "Wavelength")) %>%
mutate(NC_value = BC_value - BC_MeanAbs) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, BC_value, NC_value)
#COMPUTE THE AVERAGE OF TECHREPS
df6_Im <- df5_Im %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
df6_4MEI <- df5_4MEI %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
#COMPUTE THE AVERAGE OF EXPERIMENTAL REPEATS
df7_Im <- df6_Im %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd))
df7_Im$Wavelength <- as.numeric(as.character(df7_Im$Wavelength))
df7_4MEI <- df6_4MEI %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd))
df7_4MEI$Wavelength <- as.numeric(as.character(df7_4MEI$Wavelength))
#COMPUTE THE MAXIMUM ABSORBANCE WAVELENGTH
df5_Im$Wavelength <- as.numeric(as.character(df5_Im$Wavelength))
lmax_Im <- df5_Im %>%
filter(Conc > 0) %>%
group_by(SampleName, Conc, TechRep) %>%
slice(which.max(NC_value)) %>%
group_by(SampleName, Conc) %>%
summarize_at(vars(Wavelength), list(MeanLmax = mean, SdLmax = sd))
df5_4MEI$Wavelength <- as.numeric(as.character(df5_4MEI$Wavelength))
lmax_4MEI <- df5_4MEI %>%
filter(Conc > 0) %>%
group_by(SampleName, Conc, TechRep) %>%
slice(which.max(NC_value)) %>%
group_by(SampleName, Conc) %>%
summarize_at(vars(Wavelength), list(MeanLmax = mean, SdLmax = sd))
#SUBSET TO EXAMPLE CURVES OF Im AND 4MEI
df7_100uM_Im <- df7_Im %>%
filter(Conc == 100)
df7_100uM_4MEI <- df7_4MEI %>%
filter(Conc == 100)
df7_100uM <- rbind(df7_100uM_Im, df7_100uM_4MEI)
#ISOLATE THE DATA FOR THE LMAX PEAK
df7_Im_peak <- df7_Im %>%
filter(Wavelength == 494) %>%
mutate(RSD2 = 100*SdAbs2/MeanAbs2)
df7_4MEI_peak <- df7_4MEI %>%
filter(Wavelength == 506) %>%
mutate(RSD2 = 100*SdAbs2/MeanAbs2)
#PERFORM LINEAR REGRESSION ON CALIBRATION STANDARDS
lm_Im <- lm(MeanAbs2~Conc, data = df7_Im_peak)
summary(lm_Im)
Im_r2 <- summary(lm_Im)$r.squared
lod_Im <- 0.0111284*3.3/lm_Im$coefficients[2]
loq_Im <- 0.0111284*10/lm_Im$coefficients[2]
lm_4MEI <- lm(MeanAbs2~Conc, data = df7_4MEI_peak)
summary(lm_4MEI)
MEI_r2 <- summary(lm_4MEI)$r.squared
lod_4MEI <- 0.0094417*3.3/lm_4MEI$coefficients[2]
loq_4MEI <- 0.0094417*10/lm_4MEI$coefficients[2]
lm_4MEI$coefficients
summary(lm_Im)
View(df7_4MEI_peak)
View(df6_4MEI)
df6_Im_peak_blank <- df6_Im %>%
filter(Conc==0 & Wavelength == 494)
View(df6_Im_peak_blank)
df6_Im_peak_blank <- df6_Im %>%
filter(Conc==0 & Wavelength == 494) %>%
mutate(lod = 3.3*SdAbs/lm_Im$coefficients[2]) %>%
mutate(loq = 10*SdAbs/lm_Im$coefficients[2])
summarise(df6_Im_peak_blank$lod)
summarise(df6_Im_peak_blank)
mean(df6_Im_peak_blank$lod)
sd(df6_Im_peak_blank$lod)
df6_4MEI_peak_blank <- df6_4MEI %>%
filter(Conc==0 & Wavelength == 506) %>%
mutate(lod = 3.3*SdAbs/lm_Im$coefficients[2]) %>%
mutate(loq = 10*SdAbs/lm_Im$coefficients[2])
df6_4MEI_peak_blank <- df6_4MEI %>%
filter(Conc==0 & Wavelength == 506) %>%
mutate(lod = 3.3*SdAbs/lm_4MEI$coefficients[2]) %>%
mutate(loq = 10*SdAbs/lm_4MEI$coefficients[2])
mean(df6_4MEI_peak_blank$lod)
sd(df6_4MEI_peak_blank$lod)
mean(df6_Im_peak_blank$lod)
mean(df6_4MEI_peak_blank$lod)
#Load libraries
setwd(dirname(rstudioapi::getSourceEditorContext()$path)) #path is where this code is saved - data must be in the same folder
library(readxl)
library(dplyr)
library(stringr)
library(reshape)
library(ggplot2)
library(RColorBrewer)
library(scales)
#OPEN IMIDAZOLE FILES
df_p1 <- read_excel('Exp 20250603 - Quantitation of Imidazole with AMTA.xlsx','Plate 1 Ex492 Transposed')
df_p2 <- read_excel('Exp 20250604 - Quantitation of Imidazole with AMTA Pt2.xlsx','Plate 1 Ex492 Transposed')
df_p3 <- read_excel('Exp 20250616 - Quantitation of Imidazole with AMTA (Pt1 Repeat).xlsx','Plate 1 Ex492 Transposed')
name_df_p1 <- read_excel('Exp 20250603 - Quantitation of Imidazole with AMTA.xlsx','Sample Names')
name_df_p2 <- read_excel('Exp 20250604 - Quantitation of Imidazole with AMTA Pt2.xlsx','Sample Names')
name_df_p3 <- read_excel('Exp 20250616 - Quantitation of Imidazole with AMTA (Pt1 Repeat).xlsx','Sample Names')
#OPEN 4-METHYLIMIDAZOLE FILES
df_p4 <- read_excel('Exp 20250820a - Quantitation of 4MEI with AMTA.xlsx','Plate 1 Ex506 Transposed')
df_p5 <- read_excel('Exp 20250823 - Quantitation of 4MEI with AMTA and Selectivity.xlsx','Plate 1 Ex506 Transposed')
df_p6 <- read_excel('Exp 20250824 - Quantitation of 4MEI with AMTA and Food Samples.xlsx','Plate 1 Ex506 Transposed')
name_df_p4 <- read_excel('Exp 20250820a - Quantitation of 4MEI with AMTA.xlsx','Sample Names')
name_df_p5 <- read_excel('Exp 20250823 - Quantitation of 4MEI with AMTA and Selectivity.xlsx','Sample Names')
name_df_p6 <- read_excel('Exp 20250824 - Quantitation of 4MEI with AMTA and Food Samples.xlsx','Sample Names')
#RENAME FIRST COLUMN
data_list_Im <- list(df_p1, df_p2, df_p3)
data_list_4MEI <- list(df_p4, df_p5, df_p6)
rename_col1 <- function(df) {
names(df)[1]<-"Well_ID"
return(df)
}
data_list_Im <- lapply(data_list_Im, rename_col1)
data_list_4MEI <- lapply(data_list_4MEI, rename_col1)
#MERGE NAMES_DF WITH MAIN DATAFRAME
names_list_Im <- list(name_df_p1, name_df_p2, name_df_p3)
names_list_4MEI <- list(name_df_p4, name_df_p5, name_df_p6)
merge_names <- function(dfName, dfData, suffix, num){
dfNew <- cbind(dfName, dfData[!names(dfData) %in% names(dfName)])
dfNew <- cbind(Plate = num, dfNew)
return(dfNew)
}
df1_list_Im <- Map(merge_names, names_list_Im, data_list_Im, MoreArgs = list(suffix = "Im"), num = seq_along(names_list_Im))
names(df1_list_Im) <- str_c("df1_p", seq_along(df1_list_Im))
df1_list_4MEI <- Map(merge_names, names_list_4MEI, data_list_4MEI, MoreArgs = list(suffix = "4MEI"), num = seq_along(names_list_4MEI)+3)
names(df1_list_4MEI) <- str_c("df1_p", seq_along(df1_list_4MEI)+3)
#MERGE DATAFRAMES IN THE LISTS
df1_Im <- bind_rows(df1_list_Im)
df1_4MEI <- bind_rows(df1_list_4MEI)
#WHERE THE INDIVIDUAL SPECTRA ARE IN COLUMNS, STACK THE DATA
df2_Im <- melt(df1_Im, id=c("Well_ID", "SampleName", "Conc", "TechRep", "Plate"))
names(df2_Im)[names(df2_Im) == "variable"] <- "Wavelength"
df2_4MEI <- melt(df1_4MEI, id=c("Well_ID", "SampleName", "Conc", "TechRep", "Plate"))
names(df2_4MEI)[names(df2_4MEI) == "variable"] <- "Wavelength"
#COMPUTE THE AVERAGE OF TECHREPS
df3_Im <- df2_Im %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(value), list(MeanAbs = mean, SdAbs = sd)) %>%
filter(SampleName == "Im")
df3_Im$Wavelength <- as.numeric(as.character(df3_Im$Wavelength))
df3_4MEI <- df2_4MEI %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(value), list(MeanAbs = mean, SdAbs = sd)) %>%
filter(SampleName == "4MEI")
df3_4MEI$Wavelength <- as.numeric(as.character(df3_4MEI$Wavelength))
#EXTRACT 0uM CONTROLS AND COMPUTE THE AVERAGE OF TECHREPS
df_Blank_Im <- df2_Im %>%
filter(Conc == 0 & SampleName == "Im") %>%
group_by(Plate, Wavelength) %>%
summarize_at(vars(value), list(BC_MeanAbs = mean, BC_SdAbs = sd))
df_Blank_4MEI <- df2_4MEI %>%
filter(Conc == 0 & SampleName == "4MEI") %>%
group_by(Plate, Wavelength) %>%
summarize_at(vars(value), list(BC_MeanAbs = mean, BC_SdAbs = sd))
#CALCULATE THE 0uM (REAGENT BLANK) CORRECTED ABSORBANCE VALUES
df4_Im <- inner_join(df2_Im, df_Blank_Im, by=c("Plate", "Wavelength")) %>%
mutate(NC_value = value - BC_MeanAbs) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, NC_value)
df4_4MEI <- inner_join(df2_4MEI, df_Blank_4MEI, by=c("Plate", "Wavelength")) %>%
mutate(NC_value = value - BC_MeanAbs) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, NC_value)
#COMPUTE THE AVERAGE OF TECHREPS
df5_Im <- df4_Im %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
df5_4MEI <- df4_4MEI %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
#COMPUTE THE AVERAGE OF EXPERIMENTAL REPEATS
df6_Im <- df5_Im %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd)) %>%
filter(SampleName == "Im")
df6_Im$Wavelength <- as.numeric(as.character(df6_Im$Wavelength))
df6_4MEI <- df5_4MEI %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd)) %>%
filter(SampleName == "4MEI")
df6_4MEI$Wavelength <- as.numeric(as.character(df6_4MEI$Wavelength))
#COMPUTE THE MAXIMUM FLUORESCENCE WAVELENGTH
df4_Im$Wavelength <- as.numeric(as.character(df4_Im$Wavelength))
lmax_Im <- df4_Im %>%
filter(Conc > 0) %>%
group_by(SampleName, Conc, TechRep) %>%
slice(which.max(NC_value)) %>%
group_by(SampleName, Conc) %>%
summarize_at(vars(Wavelength), list(MeanLmax = mean, SdLmax = sd))
df4_4MEI$Wavelength <- as.numeric(as.character(df4_4MEI$Wavelength))
lmax_4MEI <- df4_4MEI %>%
filter(Conc > 0) %>%
group_by(SampleName, Conc, TechRep) %>%
slice(which.max(NC_value)) %>%
group_by(SampleName, Conc) %>%
summarize_at(vars(Wavelength), list(MeanLmax = mean, SdLmax = sd))
#SUBSET TO EXAMPLE CURVES OF Im AND 4MEI
df6_100uM_Im <- df6_Im %>%
filter(Conc == 100)
df6_100uM_4MEI <- df6_4MEI %>%
filter(Conc == 100)
df6_100uM <- rbind(df6_100uM_Im, df6_100uM_4MEI)
#ISOLATE THE DATA FOR THE LMAX PEAK
df6_Im_peak <- df6_Im %>%
filter(Wavelength == 655)
df6_4MEI_peak <- df6_4MEI %>%
filter(Wavelength == 655)
##OPEN IMIDAZOLE FILES
df_p1a <- read_excel('Exp 20250603 - Quantitation of Imidazole with AMTA.xlsx','Plate 1 Transposed')
df_p2a <- read_excel('Exp 20250604 - Quantitation of Imidazole with AMTA Pt2.xlsx','Plate 1 Transposed')
df_p3a <- read_excel('Exp 20250616 - Quantitation of Imidazole with AMTA (Pt1 Repeat).xlsx','Plate 1 Transposed')
#OPEN 4-METHYLIMIDAZOLE FILES
df_p4a <- read_excel('Exp 20250820a - Quantitation of 4MEI with AMTA.xlsx','Plate 1 Transposed')
df_p5a <- read_excel('Exp 20250823 - Quantitation of 4MEI with AMTA and Selectivity.xlsx','Plate 1 Transposed')
df_p6a <- read_excel('Exp 20250824 - Quantitation of 4MEI with AMTA and Food Samples.xlsx','Plate 1 Transposed')
#RENAME FIRST COLUMN
data_list_Im_a <- list(df_p1a, df_p2a, df_p3a)
data_list_4MEI_a <- list(df_p4a, df_p5a, df_p6a)
data_list_Im_a <- lapply(data_list_Im_a, rename_col1)
data_list_4MEI_a <- lapply(data_list_4MEI_a, rename_col1)
#MERGE NAMES_DF WITH MAIN DATAFRAME
df1_list_Im_a <- Map(merge_names, names_list_Im, data_list_Im_a, MoreArgs = list(suffix = "Im"), num = seq_along(names_list_Im))
names(df1_list_Im_a) <- str_c("df1_p", seq_along(df1_list_Im_a))
df1_list_4MEI_a <- Map(merge_names, names_list_4MEI, data_list_4MEI_a, MoreArgs = list(suffix = "4MEI"), num = seq_along(names_list_4MEI)+3)
names(df1_list_4MEI_a) <- str_c("df1_p", seq_along(df1_list_4MEI_a)+3)
#MERGE DATAFRAMES IN THE LISTS
df1_Im_a <- bind_rows(df1_list_Im_a)
df1_4MEI_a <- bind_rows(df1_list_4MEI_a)
#SUBSET THE DATA
df2_Im_a  <- cbind(df1_Im_a [1:5],
df1_Im_a ["494"],
df1_Im_a ["655"])
names(df2_Im_a)[6:7] <- c("AbsEx", "AbsEm")
df2_4MEI_a  <- cbind(df1_4MEI_a [1:5],
df1_4MEI_a ["506"],
df1_4MEI_a ["655"])
names(df2_4MEI_a)[6:7] <- c("AbsEx", "AbsEm")
#CALCULATE THE AVERAGE ABSORBANCE OF THE EXCITATION AND EMISSION WAVELENGTHS
df2_Im_a$Mean_ExEmAb <- (df2_Im_a$AbsEx + df2_Im_a$AbsEm)/2
df2_4MEI_a$Mean_ExEmAb <- (df2_4MEI_a$AbsEx + df2_4MEI_a$AbsEm)/2
#PERFORM IFE CORRECTION
#SUBSET THE FLUORESCENCE DATA (UNAVERAGED) TO PEAK
df2_Im_peak <- df2_Im %>%
filter(Wavelength == 655)
df2_4MEI_peak <- df2_4MEI %>%
filter(Wavelength == 655)
#MERGE WITH ABSORBANCE DATA
df7_Im <- merge(df2_Im_peak, df2_Im_a, by = c("Plate", "Well_ID", "SampleName", "Conc", "TechRep"))
df7_4MEI <- merge(df2_4MEI_peak, df2_4MEI_a, by = c("Plate", "Well_ID", "SampleName", "Conc", "TechRep"))
#CALCULATE IFE CORRECTED FLUORESCENCE
df7_Im$FCorr <- df7_Im$value*10^(df7_Im$Mean_ExEmAb)
df7_4MEI$FCorr <- df7_4MEI$value*10^(df7_4MEI$Mean_ExEmAb)
#EXTRACT 0uM CONTROLS AND COMPUTE THE AVERAGE OF TECHREPS
df_Blank_Im_FC <- df7_Im %>%
filter(Conc == 0 & SampleName == "Im") %>%
group_by(Plate) %>%
summarize_at(vars(FCorr), list(BC_MeanAbs2 = mean, BC_SdAbs2 = sd))
df_Blank_4MEI_FC <- df7_4MEI %>%
filter(Conc == 0 & SampleName == "4MEI") %>%
group_by(Plate) %>%
summarize_at(vars(FCorr), list(BC_MeanAbs2 = mean, BC_SdAbs2 = sd))
#CALCULATE THE 0uM (REAGENT BLANK) CORRECTED ABSORBANCE VALUES
df8_Im <- inner_join(df7_Im, df_Blank_Im_FC, by=c("Plate")) %>%
mutate(NC_value = FCorr - BC_MeanAbs2) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, FCorr, NC_value)
df8_4MEI <- inner_join(df7_4MEI, df_Blank_4MEI_FC, by=c("Plate")) %>%
mutate(NC_value = FCorr - BC_MeanAbs2) %>%
dplyr::select(Plate, Well_ID, SampleName, Conc, TechRep, Wavelength, value, FCorr, NC_value)
#COMPUTE THE AVERAGE OF TECHREPS
df9_Im <- df8_Im %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
df9_4MEI <- df8_4MEI %>%
group_by(Plate, SampleName, Conc, Wavelength) %>%
summarize_at(vars(NC_value), list(MeanAbs = mean, SdAbs = sd))
#COMPUTE THE AVERAGE OF EXPERIMENTAL REPEATS
df10_Im <- df9_Im %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd)) %>%
filter(SampleName == "Im")
df10_Im$Wavelength <- as.numeric(as.character(df10_Im$Wavelength))
df10_4MEI <- df9_4MEI %>%
group_by(SampleName, Conc, Wavelength) %>%
summarize_at(vars(MeanAbs), list(MeanAbs2 = mean, SdAbs2 = sd)) %>%
filter(SampleName == "4MEI")
df10_4MEI$Wavelength <- as.numeric(as.character(df10_4MEI$Wavelength))
#PERFORM LINEAR REGRESSION ON CALIBRATION STANDARDS
lm_Im <- lm(MeanAbs2~Conc, data = df10_Im)
summary(lm_Im)
Im_r2 <- summary(lm_Im)$r.squared
lod_Im <- 96.770*3.3/lm_Im$coefficients[2]
loq_Im <- 96.770*10/lm_Im$coefficients[2]
lm_4MEI <- lm(MeanAbs2~Conc, data = df10_4MEI)
summary(lm_4MEI)
MEI_r2 <- summary(lm_4MEI)$r.squared
lod_4MEI <- 46.4185*3.3/lm_4MEI$coefficients[2]
loq_4MEI <- 46.4185*10/lm_4MEI$coefficients[2]
View(df9_Im)
View(df_Blank_4MEI_FC)
View(df6_4MEI_peak)
View(df5_Im)
View(df8_Im)
View(df9_Im)
df9_Im_peak_blank <- df9_Im %>%
filter(Conc==0 & SampleName == "Im") %>%
mutate(lod = 3.3*SdAbs/lm_Im$coefficients[2]) %>%
mutate(loq = 10*SdAbs/lm_Im$coefficients[2])
View(df9_Im_peak_blank)
mean(df9_Im_peak_blank$lod)
sd(df9_Im_peak_blank$lod)
df9_4MEI_peak_blank <- df9_4MEI %>%
filter(Conc==0 & SampleName == "4MEI") %>%
mutate(lod = 3.3*SdAbs/lm_Im$coefficients[2]) %>%
mutate(loq = 10*SdAbs/lm_Im$coefficients[2])
View(df9_4MEI_peak_blank)
View(df9_4MEI_peak_blank)
View(df9_4MEI_peak_blank)
lm_4MEI <- lm(MeanAbs2~Conc, data = df10_4MEI)
summary(lm_4MEI)
MEI_r2 <- summary(lm_4MEI)$r.squared
df9_4MEI_peak_blank <- df9_4MEI %>%
filter(Conc==0 & SampleName == "4MEI") %>%
mutate(lod = 3.3*SdAbs/lm_4MEI$coefficients[2]) %>%
mutate(loq = 10*SdAbs/lm_4MEI$coefficients[2])
mean(df9_4MEI_peak_blank$lod)
sd(df9_4MEI_peak_blank$lod)
lod_Im <- 96.770*3.3/lm_Im$coefficients[2]
